자바 switch 문

IT 위키
Java switch statement
하나의 값을 여러 경우와 견주어 해당하는 곳으로 분기하는 제어문
   switch (식) {
       case 값1:
           ...
           break;
       case 값2:
           ...
           break;
       default:
           ...
   }

break 를 빼면 아래로 흐른다

[편집 | 원본 편집]

case 는 진입 지점일 뿐이고 종료 지점이 아니다. 일치하는 case 로 들어간 뒤에는 break 나 switch 문의 끝을 만날 때까지 뒤따르는 case 의 문장을 모두 실행한다. 이것을 폴스루(fall-through)라고 한다.

아래 코드에서 i 가 3 이므로 case 3 으로 들어가고, break 가 없어 case 4·case 5·default 까지 차례로 실행된다.

   int i = 3, k = 1;
   switch (i) {
       case 1: k += 1;
       case 2: k++;
       case 3: k = 0;
       case 4: k += 3;
       case 5: k -= 10;
       default: k--;
   }
   // k = 0 → 3 → -7 → -8

의도한 폴스루라면 주석을 남기거나, 여러 case 를 붙여 쓰는 형태로 분명히 한다.

   case 1: case 2: case 3:
       ...
       break;

쓸 수 있는 자료형

[편집 | 원본 편집]
  • byte, short, char, int 와 그 래퍼 클래스
  • enum (자바 5부터)
  • String (자바 7부터)
  • long, float, double, boolean 은 쓸 수 없다
  • case 의 값은 컴파일 시점에 정해지는 상수여야 한다. 변수는 쓸 수 없다.
  • case 값이 중복되면 컴파일 오류다.
  • default 는 없어도 되고 위치는 어디든 상관없지만 관례상 맨 아래에 둔다.
  • 자바 14부터는 폴스루가 없고 값을 돌려주는 switch 식(`->`)을 쓸 수 있다.

같이 보기

[편집 | 원본 편집]